import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import java.io.*;

public class MScreen {

	public JButton SendButton; // 보내기버튼
	public int SetSize;
	public String[] listEntries = { "사용자1", "사용자2", "사용자3", "사용자2", "사용자2",
			"사용자2", "사용자2" }; // 로그인되어 있는 사용자 정보
	public JList userList = new JList(listEntries);

	JTextArea sendText = new JTextArea(10, 20); // 보내는 메세지 텍스트
	JTextArea getText = new JTextArea(10, 20); // 보내는 메세지 텍스트

	// -----------------------------------------------------------------------------
	// MScreen GUI 생성
	// -----------------------------------------------------------------------------

	public void go() {

		// -----------------------------------------------------------------------------
		// 보내는 메세지 창 크기는 5행, 20열로 설정함
		// 메세지 행이 3줄이상이되면 스크롤바로 움직여서 볼수있도록 설정함
		// 받는 메세지 창 크기는 10행, 20열로 설정함
		// 메세지 행이 10줄이상이면 스크롤바로 움직여서 볼수 있도록 설정함
		// -----------------------------------------------------------------------------

		JFrame frame = new JFrame("Red-PostBox");

		// /////// getPanel ////////////////////////////////////////////////////

		JPanel getPanel = new JPanel(); // 받는 메세지 패널
		JTextArea getText = new JTextArea(10, 20); // 받는 메세지 텍스트
		getText.setLineWrap(true);
		getPanel.add(getText); // 패널에 받는 메세지 추가

		JScrollPane getScroller = new JScrollPane(getText); // 받는 메세지 스크롤바 설정
		// 받는 메세지 필요한만큼 스크롤바 설정
		getScroller
				.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		getPanel.add(getScroller); // 패널에 스크롤바 추가

		JScrollPane listScroller = new JScrollPane(userList); // 스크롤바 설정
		listScroller
				.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		getPanel.add(listScroller);

		userList.setVisibleRowCount(5);
		userList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

		// ///////sendPanel//////////////////////////////////////////////////////

		JPanel sendPanel = new JPanel(); // 보내는 메세지 패널
		JTextArea sendText = new JTextArea(10, 20); // 보내는 메세지 텍스트
		sendPanel.add(sendText); // 패널에 보내는 메세지 추가
		sendText.setLineWrap(true);

		JScrollPane sendScroller = new JScrollPane(sendText); // 보내는 메세지 스크롤바 설정
		// 보내는 메세지 필요한만큼 스크롤바 설정
		sendScroller
				.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
		sendPanel.add(sendScroller); // 패널에 스크롤바 추가

		SendButton = new JButton("SENDIT");
		sendPanel.add(SendButton);

		// ----------------------------------------------------------------------------
		// frame 환경 설정
		// ----------------------------------------------------------------------------

		frame.setSize(350, 400); // 메신져 창 사이즈 설정
		frame.setResizable(false);
		frame.add("South", sendPanel); // sendPanel 북쪽에 위치
		frame.add("North", getPanel); // getPanel 남쪽에 위치
		frame.setVisible(true);

		this.ReciveOn();

	}
	// -----------------------------------------------------------------------------
	// Transmission 메세지 받을 준비 시킴
	// -----------------------------------------------------------------------------

	public void ReciveOn() {
		Transmission trans = new Transmission();
		trans.recieveText();
	}

	// -----------------------------------------------------------------------------
	// Sendit 버튼에 대한 ActionListener를 하위 클래스로 생성
	// -----------------------------------------------------------------------------

	class SendButtonListener implements ActionListener {
		public void actionPerformed(ActionEvent event) {

			// 사용자 정보에서 선택된 아이디 가져오기
			String getUserId = (String) userList.getSelectedValue();
			System.out.println(getUserId);
			int colIndex = 2;

			UserFile uf = new UserFile();
			String ipAddress = uf.gettokenByIndex(getUserId, colIndex);
			System.out.println(ipAddress);

			String message = new String(sendText.getText()); // 사용자가 입력한 메세지
																// 가져오기
			Transmission trans = new Transmission(); // 전송 객체 생성

			trans.sendText(ipAddress, message); // ipAddres와 message
												// Transmission 객체로 전달

			sendText.setText(" "); // Sendit 버튼을 누르면 sendTextArea 에 있는 Text 삭제
		}
	} // 하위 클래스인 'SendButtonListener' 끝

} // MScreen class 끝